Flask 提供了簡單的方法來處理錯誤狀況,例如當用戶訪問一個不存在的路由時,就會觸發 404 錯誤(頁面未找到)。接下來要介紹如何在 Flask 中處理常見錯誤,並自定義錯誤頁面。我們就先拿 404 錯誤當範例。
我們先修改 app.py 讓它可以處理 404 錯誤:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return '這是首頁'
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
if __name__ == '__main__':
app.run(debug=True)
使用 @app.errorhandler(404) 來定義一個處理 404 錯誤的函數,當 404 錯誤發生時,就會顯示 404.html 這個模板。
在 templates 資料夾中新增 404.html ,這是一個可以自定義的錯誤頁面:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>頁面未找到</title>
</head>
<body>
<h1>404 - 頁面未找到</h1>
<p>抱歉,您訪問的頁面不存在。</p>
<a href="/">返回首頁</a>
</body>
</html>
這樣以後當用戶訪問一個不存在的頁面時,就會顯示我們自定義的錯誤頁面,而不再是 Flask 的預設頁面。
除了 404 錯誤,我們還可以處理其他的 HTTP 錯誤,例如 500(伺服器錯誤)。同樣的,我們可以使用 @app.errorhandler 來捕捉這些錯誤並顯示對應的錯誤頁面:
@app.errorhandler(500)
def internal_server_error(e):
return render_template('500.html'), 500
然後再去創建一個 500.html 的模板來顯示伺服器錯誤的相關資訊就行了。